import Vue from 'vue';
import App from './App';
import bus from './components/common/bus';
import router from './router';
import axios from 'axios';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';    // 默认主题
// import '../static/css/theme-green/index.css';       // 浅绿色主题
import "babel-polyfill";
import VueClipboard from 'vue-clipboard2';
import Vuex from 'vuex';
Vue.use(VueClipboard);
Vue.use(Vuex);
Vue.use(ElementUI, { size: 'small' });
axios.defaults.withCredentials = true;

Vue.prototype.$axios = axios;


const store = new Vuex.Store({
    state: {
        count: 0,
    },
    mutations: {
        increment: state => state.count++,
        decrement: state => state.count--,
    }
})
axios.interceptors.response.use(
    response => {
        let status=response.data.status;
        if(status === 10){
            localStorage.removeItem('ms_username');
            router.replace({
                path: '/login',
                query: {redirect: router.currentRoute.fullPath}//登录成功后跳入浏览的当前页面
            });
        }else if(status ===401){
            router.replace({
                path: '/403',
            });
        }
        return response;
    },
    error => {
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    // 这里写清除token的代码
                    router.replace({
                        path: '/login',
                        query: {redirect: router.currentRoute.fullPath}//登录成功后跳入浏览的当前页面
                    })
            }
        }
        return Promise.reject(error.response.data)
    });
// new Vue().$mount('#app')

//使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => {
    const role = localStorage.getItem('ms_username');
    if(!role && to.path !== '/login'){
        next('/login');
    }else if(to.meta.permission){
        // 如果是管理员权限则可进入，这里只是简单的模拟管理员权限而已
        role === 'admin' ? next() : next('/403');
    }else{
        // 简单的判断IE10及以下不进入富文本编辑器，该组件不兼容
        if(navigator.userAgent.indexOf('MSIE') > -1 && to.path === '/editor'){
            Vue.prototype.$alert('vue-quill-editor组件不兼容IE10及以下浏览器，请使用更高版本的浏览器查看', '浏览器不兼容通知', {
                confirmButtonText: '确定'
            });
        }else{
            next();
        }
    }
})
new Vue({
    router,
    store,
    render: h => h(App)
}).$mount('#app');
